package cn.edu.buu.hospital.entity;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
 * 医生排班实体类
 */
public class Visit implements Serializable {
    // 排班ID（主键）
    private Long visitId;
    // 医生用户ID（外键，关联user表type=2的用户）
    private Long userId;
    // 所属科室ID（外键）
    private Long deptId;
    // 出诊时段（如：2025-10-01 上午8:00-12:00）
    private String visitpeiod;
    // 最大预约人数
    private Integer maxNum;
    // 已预约人数
    private Integer usedNum;
    // 创建时间
    private LocalDateTime createTime;
    // 关联的科室信息
    private Department department;
    // 医生姓名
    private String doctorName;
    // 添加visitDate属性用于查询条件
    private String visitDate;
    // 新增缺失的成员变量
    private String timeSlot;
    // 无参构造方法
    public Visit() {
    }
    // getter和setter方法 - 全部使用驼峰命名
    public Long getVisitId() {
        return visitId;
    }
    public void setVisitId(Long visitId) {
        this.visitId = visitId;
    }
    public Long getUserId() {
        return userId;
    }
    public void setUserId(Long userId) {
        this.userId = userId;
    }
    public Long getDeptId() {
        return deptId;
    }
    public void setDeptId(Long deptId) {
        this.deptId = deptId;
    }
    public String getVisitPeriod() {
        return visitpeiod;
    }
    public void setVisitPeriod(String visitPeriod) {
        this.visitpeiod = visitPeriod;
        // 解析visitPeriod为visitDate和timeSlot
        if (visitPeriod != null && visitPeriod.contains(" ")) {
            String[] parts = visitPeriod.split(" ", 2);
            this.visitDate = parts[0];
            this.timeSlot = parts[1];
        } else {
            this.visitDate = visitPeriod;
            this.timeSlot = "";
        }
    }
    public Integer getMaxNum() {
        return maxNum;
    }
    public void setMaxNum(Integer maxNum) {
        this.maxNum = maxNum;
        // 计算可预约数量
    }
    public Integer getUsedNum() {
        return usedNum;
    }
    public void setUsedNum(Integer usedNum) {
        this.usedNum = usedNum != null ? usedNum : 0;
    }
    public LocalDateTime getCreateTime() {
        return createTime;
    }
    public void setCreateTime(LocalDateTime createTime) {
        this.createTime = createTime;
    }
    public Department getDepartment() {
        return department;
    }
    public void setDepartment(Department department) {
        this.department = department;
    }
    public String getDoctorName() {
        return doctorName;
    }
    public void setDoctorName(String doctorName) {
        this.doctorName = doctorName;
    }
    // getter和setter方法 for JSP页面属性
    public String getVisitDate() {
        return visitDate;
    }
    public void setVisitDate(String visitDate) {
        this.visitDate = visitDate;
    }
    public String getTimeSlot() {
        return timeSlot;
    }
}